mybatis对象或数组转成临时表join 您所在的位置:网站首页 java list创建 mybatis对象或数组转成临时表join

mybatis对象或数组转成临时表join

2024-06-02 14:06| 来源: 网络整理| 查看: 265

in数据太多导致查询延迟

工作上跨服务调用传递的id数组 然后根据数组里的id 去in 一个表。618的时候发现查询老是超时。然后我这边准备优化

对象入参变成临时表的方法

一开始是想着把对象变成一个临时表 通过jion 连接去查询。 找了一下发现可以用select 1,2,3 …这种该方法 sql 的 select 可以指定常量,包括对象里面的数据。根据 mybatis 语法可以直接select #{字段名1} as amount,#{字段名2} as store_code 就可以转换这个对*象,

代码实例 /** *sql 的 select 可以指定常量,当然就包括对象里面的数据。所以根据 mybatis 语法我们*可以直接select #{字段名1} as amount,#{字段名2} as store_code 就可以转换这个对*象, */ SELECT * FROM tb_product p LEFT JOIN ( SELECT #{num} as a , #{age} as b )ab ON p.product_id = ab.a 数组入参变成临时表的方法

sql语法中有个union这个操作,可以用union可以连多行数据,就像这样:

select 10 as a, 30 as b union select 20 as a ,40 as b

mybatis中可以用foreach 。这种方式的数据量也是在一个定值才不慢

SELECT * FROM tb_product p LEFT JOIN ( SELECT #{productId.num} as a, #{productId.age} as b )ab ON p.product_id = ab.a in方式可以改成多查询 mysql in 超过 300 个,性能就会严重下降。 建议,先写临时表,再关联查询可以拆分成多个list 多次查询比一次查询性能要快


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有